/*
 * ParserTrainer.h
 *
 *  Created on: Mar 20, 2013
 *      Author: ayran
 */

#ifndef PARSERTRAINER_H_
#define PARSERTRAINER_H_
#include <string>
#include "../../Matematica/include/Matriz4d.h"

enum SExpressionState {
	NONE, SYMBOL, SUBLIST
};

class ParserTrainer {

public:
	ParserTrainer();
	ParserTrainer(std::string msg);
	virtual ~ParserTrainer();
	bool skip(int count);//pula no
	bool in(int levelCount); //entra no nó ou abre aspas de acordo com quantidade passada
	bool out(int levelCount); //fecha aspa de acordo com quantidade passada
	std::string take(); //devolve token
	std::string EXpress();//delver no completo da com seus filhos/*Edivã */
	int getExprLength();//devolver tamanho da mensagem - index
	void skipToEnd(); //vai para o final da string
	Matriz4d express4d(int);//metodo sendo criado para transformar a string em 4d//sendo estudado

private:

	std::string expression;
	unsigned int index;


	char getChar();//consome um caracater
	void pushChar();//retorna um caracater
	void skipWhiteSpaces(); //pula espacos em brancos

};

#endif /* PARSERTRAINER_H_ */
